package pe.mutacion;

import pe.algenetico.MiRandom;
import pe.cromosoma.Cromosoma;

public class Insercion extends MutacionPadre{

	public Cromosoma mutar(Cromosoma individuo, MiRandom ran, int param){
		//param es el numero de inserciones
		for(int j=0;j<param;j++){
			//Hallamos los puntos de cruce
			int punto_cruce1 = ran.r.nextInt(individuo.getLong_cromo());
			int punto_cruce2 = ran.r.nextInt(individuo.getLong_cromo());
			if(punto_cruce1>punto_cruce2){
				int aux=punto_cruce1;
				punto_cruce1=punto_cruce2;
				punto_cruce2=aux;
			}
			//Intercambiamos punto de cruce 1 con punto de cruce 2
			int aux = individuo.getIndices()[punto_cruce2];
			for(int i =punto_cruce2; i>punto_cruce1;i--){
				individuo.getIndices()[i]=individuo.getIndices()[i-1];
			}
			individuo.getIndices()[punto_cruce1]=aux;		
		}
		//Reevaluamos
		individuo.setAptitud(individuo.evalua());
				
		return individuo;
	}


}
